// import 'package:flutter/material.dart';
// // import 'setting_page.dart';
// import 'billing_page.dart';
part of 'my_app.dart';

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _currentIndex = 1; // 设置默认页面序号
  final PageController _pageController = PageController(
    initialPage: 1,
    keepPage: true,
  ); // 页面控制器, 初始页面1为计费页面
  final List<Widget> _pages = [
    const ConvertingPage(), // 转换页面
    const BillingPage(), // 计费页面
    const SettingPage(), // 设置页面
  ]; // 定义底部导航栏的页面列表
  final List<BottomNavigationBarItem> _bottomNavigationBarItem = [
    BottomNavigationBarItem(icon: Icon(Icons.public), label: '转换'), // 转换页面
    BottomNavigationBarItem(icon: Icon(Icons.calculate), label: '计费'), // 计费页面
    BottomNavigationBarItem(icon: Icon(Icons.person), label: '设置'), // 设置页面
  ]; // 定义底部导航栏的项列表

  void _onPageChanged(int index) {
    if (index != _currentIndex) {
      setState(() {
        _currentIndex = index;
        _pageController.animateToPage(
          index,
          duration: const Duration(milliseconds: 130),
          curve: Curves.ease,
        ); // 滑动切换到对应的页面
      });
    }
  }

  void _onBottomNavTapped(int index) {
    setState(() {
      _currentIndex = index;
      _pageController.jumpToPage(index); // 点击底部导航栏跳转到对应的页面
    });
  }

  @override
  void dispose() {
    _pageController.dispose(); // 释放页面控制器
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: PageView(
        controller: _pageController,
        onPageChanged: _onPageChanged, // 页面切换时保持与底部导航栏的同步
        children: _pages,
      ), // PageView显示当前选中的页面
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: _currentIndex, // 当前选中项的索引
        selectedItemColor: Colors.blue, // 选中项的颜色
        items: _bottomNavigationBarItem, // 定义底部导航栏的项列表
        onTap: _onBottomNavTapped, // 点击底部导航栏时，PageView切换到对应的页面
      ),
    );
  } // build
} // _MyHomePageState
